package cn.edu.wynu.d1_math;
/*
Runtime
1、代表程序所在的运行环境。
2、Runtime是一个单例类。

Runtime类提供的常见方法
            方法名                                 说明
public static Runtime getRuntime()  返回与当前Java应用程序关联的运行时对象
public void exit(int status)        终止当前运行的虚拟机
public int availableProcessors()    返回Java虚拟机可用的处理器数
public long totalMemory()           返回Java虚拟机中的内存总量
public long freeMemory()            返回Java虚拟机中的可用内存
public Process exec(String command) 启动某个程序，并返回代表该程序的对象
*/

import java.io.IOException;

public class RuntimeTest {
    public static void main(String[] args) throws IOException, InterruptedException {
        // 了解Runtime的几个常见方法
        // 1、public static Runtime getRuntime()  返回与当前Java应用程序关联的运行时对象
        Runtime r = Runtime.getRuntime();

        // 2、public void exit(int status)        终止当前运行的虚拟机，该参数用作状态代码；按照惯例，非零状态代码表示异常终止
        // r.exit(0); // 最好不用

        // 3、public int availableProcessors()    返回Java虚拟机可用的处理器数，获取虚拟机能够使用的处理器数量
        System.out.println(r.availableProcessors()); // 16

        // 4、public long totalMemory()           返回Java虚拟机中的内存总量
        System.out.println(r.totalMemory() / 1024.0 / 1024 + "MB"); // 1024 = 1K

        // 5、public long freeMemory()            返回Java虚拟机中的可用内存
        System.out.println(r.freeMemory() / 1024.0 / 1024 + "MB");

        // 6、public Process exec(String command) 启动某个程序，并返回代表该程序的对象
        // r.exec("D:\\20天精通Java资料B站\\第一阶段：基础入门9天课程（资料）\\全部软件\\XJad-class反编译工具\\XJad.exe"); // 启动XJad程序
        Process p = r.exec("notepad"); // 启动记事本程序
        Thread.sleep(5000); // 让程序等待5秒后再销毁
        p.destroy(); // 销毁记事本程序
    }
}
